
# *表示顺序动态传参，接收的所有参数都会被处理为tuple
def build(*args):
    print(args)

# **表示关键字动态传参，接收的所有参数都会被处理为dict
def generate(**args):
    print(args)

# 参数顺序必须是: 位置 > *args > 默认参数 > **kwargs
def plus(name,*args, age=20, **kwargs):
    print(f"{name=}, {age=}, {args=}, {kwargs=}")


build("ps6","xbox360")
generate(pc="amd",ps="6")
plus('eric','ps1','ps2','ps3', age=25, gender='male',location='china')


# 使用*将列表（tuple，list）打算，作为方法的参数，必须要注意：列表的长度必须等于方法的参数数量
ls = [10010,10086]
def phone(i,o):
    print(i,o)
phone(*ls)

# 使用**将字典（dict）打算，作为方法的参数，必须要注意：字典中的每一个KEY都要对应到方法中的每个变量，必须一一对应
consoles = {'sega':'DC','nintendo':'SFC','sony':'PS3'}
def mobile(sega,nintendo,sony):
    print(sega,nintendo,sony)
mobile(**consoles)
